<!DOCTYPE html>
<html lang="zh">
    <head>
        <meta charset="UTF-8" />
        <meta http-equiv="X-UA-Compatible" content="IE=edge" />
        <meta name="viewport" content="width=device-width, initial-scale=1.0" />
        <title>Document</title>
        <script>

            /* 
                使用Object创建对象的问题：
                    1. 无法区分出不同类型的对象
                    2. 不方便批量创建对象

                在JS中可以通过类（class）来解决这个问题：
                    1. 类是对象模板，可以将对象中的属性和方法直接定义在类中
                        定义后，就可以直接通过类来创建对象
                    2. 通过同一个类创建的对象，我们称为同类对象
                        可以使用instanceof来检查一个对象是否是由某个类创建
                        如果某个对象是由某个类所创建，则我们称该对象是这个类的实例

                语法：
                    class 类名 {} // 类名要使用大驼峰命名
                    const 类名 = class {}  
                    
                通过类创建对象
                    new 类()
            */

            // const Person = class {}

            // Person类专门用来创建人的对象
            class Person{

            }

            // Dog类式专门用来创建狗的对象
            class Dog{

            }


            const p1 = new Person()  // 调用构造函数创建对象
            const p2 = new Person()

            const d1 = new Dog()
            const d2 = new Dog()

            console.log(p1 instanceof Person) // true
            console.log(d1 instanceof Person) // false



            const five = {
                // 添加属性
                name: "王老五",
                age: 48,
                height: 180,
                weight: 100,

                // 添加方法
                sleep() {
                    console.log(this.name + "睡觉了~")
                },

                eat() {
                    console.log(this.name + "吃饭了~")
                },
            }


            const yellow = {
                name: "大黄",
                age: 3,
                sleep() {
                    console.log(this.name + "睡觉了~")
                },

                eat() {
                    console.log(this.name + "吃饭了~")
                },
            }

            
        </script>
    </head>
    <body></body>
</html>
